import { initGlobalApi } from "./global-api/index"
import { initMixin } from "./init"
import { lifecycleMixin } from "./lifecycle"
import { renderMixin } from "./vnode/index"

// 这个项目会打包成vue.js文件，index.js表示入口文件
// 这个函数调用才执行
function Vue(options) {
    // 解析options，完成初始化
    // options中的内容非常多，今天只解析data完成双向绑定（上）
    // 需要解析data
    // 需要解析el
    // 需要解析props
    // 拿到用户的配置，初始化，这里执行的时候this上已经挂在了_init方法
    this._init(options)
}

// 访问其他模块并传递Vue参数，这个代码会先执行
initMixin(Vue)
// -----------------------------------------------------------
// 调用这个方法是为了在vue原型上挂在方法，方便后面调用
lifecycleMixin(Vue)

// 添加render方法
renderMixin(Vue)
// --------------------------------------------------------
// 初始化生命周期及全局方法 Vue.mixin()  Vue.component()  Vue.extend
initGlobalApi(Vue)
// ----------------------------------------------------------

export default Vue